/*******************************************************
> Copyright (C) 2024 ==iot== All rights reserved.
> File Name: server.c
> Author: wyf
> Created Time: 2024年08月15日 星期四 11时13分17秒
***************************************************/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h> //目录名获取配合DIR
#include <assert.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h> //文件控制操作
#include <sys/types.h> //获取pid等
#include <sys/wait.h> //等待子进程结束
#include <time.h> //时间获取
#include <sys/ipc.h> //进程通信
#include <sys/msg.h> //消息队列
#include <sys/shm.h> //共享内存
#include <signal.h> //信号处理
#include <pthread.h> //线程
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>

typedef struct stu {
    int id;
    char name[32];
    int age;
}STU;

int main(int argc, const char* argv[])
{
    int socketfd = 0;
    int sock = 0;
    int listenfd = 0;
    char buf[1024] = {0};
    int ret = 0;
    struct sockaddr_in addr;
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == -1) {
        perror("socket");
        exit(-1);
    }

    addr.sin_family = AF_INET;
    addr.sin_port = htons(6870);
    addr.sin_addr.s_addr = inet_addr("192.168.48.128");

    ret = bind(sock, (struct sockaddr*)&addr, sizeof(struct sockaddr));
    if (ret == -1)
    {
        perror("bind");
        exit(-1);
    }
    listen(sock, 5);

    listenfd = accept(sock, NULL, NULL);
    if (listenfd == -1)
    {
        perror("accpet");
        exit(-1);
    }

    ret = recv(listenfd, buf,sizeof(buf), 0);
    if (ret == -1)
    {
        perror("recv");
        exit(-1);
    }
    STU *p = (STU*)buf;
    printf("id=%d, name=%s, age=%d\n", p->id, p->name, p->age);
    ret = send(listenfd, buf, sizeof(buf), 0);
 
    if (ret == -1)
    {
        perror("send");
        exit(-1);
    }

    close(listenfd);
    close(sock);

    return 0;

}


